home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 355_02 / slk2.exe / SPP / SPP.H < prev    next >
C/C++ Source or Header  |  1991-06-09  |  3KB  |  115 lines

  1. /*
  2.     New Sherlock Preprocessor -- Main header file.
  3.  
  4.     Source:  spp.h
  5.     Started: September 26, 1987
  6.     Version: May 31, 1988; July 15, 1988
  7.  
  8.  
  9.     PUBLIC DOMAIN SOFTWARE
  10.  
  11.     Sherlock, including the SPP, SDEL and SDIF programs, was placed in
  12.     the public domain on June 15, 1991, by its author,
  13.  
  14.         Edward K. Ream
  15.         166 North Prospect Ave.
  16.         Madison, WI 53705.
  17.         (608) 257-0802
  18.  
  19.     Sherlock may be used for any commercial or non-commercial purpose.
  20.  
  21.  
  22.     DISCLAIMER OF WARRANTIES
  23.  
  24.     Edward K. Ream (Ream) specifically disclaims all warranties,
  25.     expressed or implied, with respect to this computer software,
  26.     including but not limited to implied warranties of merchantability
  27.     and fitness for a particular purpose.  In no event shall Ream be
  28.     liable for any loss of profit or any commercial damage, including
  29.     but not limited to special, incidental consequential or other damages.
  30. */
  31.  
  32. /*
  33.     Define which compiler will be used to compile the program.
  34.     Typically, a command line option will be used to define these 
  35.     constants.
  36.  
  37.     TURBOC        use Turbo C compiler.
  38.     MICRO_SOFT    use version 4.0 of MicroSoft compiler on MS DOS.
  39. */
  40.  
  41. /*
  42.     Compile-time options:
  43.  
  44.     DEBUG        Make run-time checks.
  45.     STD_DIR        Name of first standard directory.
  46. */
  47.  
  48. #define DEBUG 1
  49.  
  50. /*
  51.     Define possible values for ch.
  52. */
  53. #define END_FILE 0x1a
  54.  
  55. /*
  56.     Define flags which will be found in macro replacement texts.
  57.     These flags MUST NOT BE NEGATIVE, so as to fit in a proper char.
  58. */
  59. #define ARG_FLAG 1
  60. #define POUND_FLAG 2
  61. #define CONCAT_FLAG 3
  62. #define EORT 4
  63. #define EXPAND_OFF 5
  64. #define ARG_OFFSET '0'
  65.  
  66. /*
  67.     Miscellaneous global constants.
  68. */
  69. #define ZERO    (0)
  70. #define TRUE    (1)
  71. #define FALSE    (0)
  72. #define ERROR    (-1)
  73. #define BAD_EXIT 1
  74.  
  75. #define INT_DIGITS 20        /* used by utl.c and other routines */
  76. #define LONG_DIGITS 40        /* used by utl.c and other routines */
  77. typedef int    bool;
  78.  
  79. #ifdef MICRO_SOFT
  80. #define FAR far
  81. #else
  82. #define FAR
  83. #endif
  84.  
  85. /*
  86.     Include subsidiary header files.
  87.     SL.H MUST be included even if SHERLOCK.C is not linked in.
  88. */
  89. #include <stdio.h>
  90. #include <stdlib.h>
  91. #include <ctype.h>
  92. #include <string.h>
  93. #include <process.h>
  94.  
  95. #include <sl.h>
  96.  
  97. #include "enum.h"
  98. #include "glb.h"
  99. #include "tmp.h"
  100.  
  101. /*
  102.     ----------    PREPROCESSOR    ----------
  103. */
  104. #define ishex(c) (isdigit(c) || (c >= 'A' && (c <= 'F' || (c>='a' && c<='f')))
  105. #define isid1(c) (isalpha(c) || c == '_')
  106. #define isid2(c) (isalpha(c) || isdigit(c) || c == '_')
  107.  
  108. #ifndef max
  109. #define max(a,b) (((a) > (b)) ? (a) : (b))
  110. #endif
  111.  
  112. #define TRACETOK(name) ENTER_TRACE(name, printf("(%s)\n", pr_tok()))
  113. #define TRACECH(name)  ENTER_TRACE(name, printf("(ch: %s)\n", pr_ch(ch)))
  114. #define is(tok) (token == tok)
  115.